<template>
  <rx-layout>
    <div slot="left" width="200" showButton="true">
      <rx-fit>
        <rx-category-treeeditor
          cat-key="BPM"
          :statisticConfig="statisticConfig"
          read-key="task.read"
          :edit="false"
          @handSelect="handSelect"
          :async="true"
          v-if="isShowManageTree"
          :isAdmin="isManageToTree"
          :treeRootList="treeRootList"
          :isBpmClient="isMyBpmClient"
          :isMyBpm="isMyBpmClient"
        ></rx-category-treeeditor>
      </rx-fit>
    </div>
    <div slot="center">
      <rx-fit :isheader="isheader">
        <div slot="toolheader" foldheader="true" foldbtn="false" border="false">
            <rx-list-title :title="i18n('list.transferTask','我的转办')"></rx-list-title>
          <span class="search-btn-box"  v-if="!isheader">
            <span class="search-btn" @click.stop="searchshow"><i class="iconfont iconguolv"></i>{{$ti18('rxList.leachBtn','过滤')}}</span>
          </span>
        </div>
        <div  btnalign="right" slot="searchbar" v-if="fitSearch" @search="search" @cancel="cancel" @close="closeSearchbar">
          <a-form :layout="colLayout">
            <a-row :gutter="24">
                <a-col :span="colSpan">
                    <a-form-item :label="i18n('form.billNo','单号')">
                        <a-input :placeholder="i18n('form.billNo','单号','input')" v-model="queryParam['Q_BILL_NO__S_EQ']" />
                    </a-form-item>
                </a-col>
              <a-col :span="colSpan" v-if="isheader">
                    <span class="table-page-search-submitButtons">
                      <a-button type="primary"  icon="search" @click="search">{{$ti18('rxList.searchBtn','查询')}}</a-button>
                      <a-button style="margin-left: 4px"  @click="cancel">{{$ti18('rxList.resetBtn','重置')}}</a-button>
                      <a @click="toggleAdvanced" style="margin-left: 8px">
                        {{ advanced ? i18n('list.putAwayBtn','收起') : i18n('list.expansionBtn','展开') }}
                        <a-icon :type="advanced ? 'up' : 'down'" />
                      </a>
                    </span>
              </a-col>
              <template v-if="advanced">
                  <a-col :span="colSpan">
                <a-form-item :label="i18n('form.itemTitle','事项标题')">
                  <a-input :placeholder="i18n('form.itemTitle','事项标题','input')" v-model="queryParam.Q_SUBJECT__S_LK" />
                </a-form-item>
                  </a-col>
                  <a-col :span="colSpan">
                <a-form-item :label="i18n('list.taskCreateTime','任务创建时间') + i18n('list.from','从')">
                  <a-date-picker
                    style="width: 100%"
                    :placeholder="i18n('list.taskCreateTime','任务创建时间','input')"
                    v-model="queryParam.Q_CREATE_TIME__D_GE"
                    format="YYYY-MM-DD"
                    @change="searchRangeDateChange($event,$event,{queryField:'Q_CREATE_TIME__D_GE'},'YYYY-MM-DD')"
                  />
                </a-form-item>
                  </a-col>
                  <a-col :span="colSpan">
                <a-form-item :label="i18n('list.to','至')">
                  <a-date-picker
                    style="width: 100%"
                    :placeholder="i18n('list.taskCreateTime','任务创建时间','input')"
                    v-model="queryParam.Q_CREATE_TIME__D_LE"
                    format="YYYY-MM-DD"
                    @change="searchRangeDateChange($event,$event,{queryField:'Q_CREATE_TIME__D_LE'},'YYYY-MM-DD')"
                  />
                </a-form-item>
                  </a-col>
              </template>
            </a-row>
          </a-form>
        </div>
        <rx-grid
          ref="table"
          v-if="isShowManageTree"
          :bordered="isBorder"
          :multiSelect="true"
          :columns="columns"
          :defaultPageSize="10"
          url="/api-bpm/bpm/core/bpmTaskTransfer/getMyTransOutTask"
          :queryParam="queryParam"
          data-field="result.data"
          :pageSizeOptions="['10', '30', '40']"
          :dataKey="taskId"
          :loadDataOnstart="true"
          @selectChange="onSelectChange"
          @getListData="loadDataAgen"
        >
          <span slot="type" slot-scope="{text, record, index}">
          <a-tag :color="typeMap[text].color">
          <span>{{typeMap[text].text}}</span>
          </a-tag>
          </span>
            <span slot="appId" slot-scope="{ text, record }">
                {{allApps[text]?$i18(allApps[text].appName,'应用名称'):$ti18('rxList.noAppName','无')}}
            </span>
            <span slot="billNo" slot-scope="{ text, record, index }">
                {{ record.billNo }}
            </span>
          <span slot="action" slot-scope="{ text, record }" class="actionIcons">
            <span v-if="record.taskId" @click="retrieveTask(record)">{{i18n('list.fetch','取回')}}</span>
            <span @click="instDetail(record)">{{$ti18('rxList.detailBtn','明细')}}</span>
          </span>
        </rx-grid>
      </rx-fit>
    </div>
  </rx-layout>
</template>


<script>
import { AppBaseList, RxLayout, Util, RxFit, RxGrid } from '@lowcode/jpaas-common-lib'
import BpmRetrieveTask from './BpmRetrieveTask'
import RxCategoryTreeeditor from '@/components/redxun/rx-category-treeeditor'
import FlowUtil from "../js/FlowUtil";
import { mapState} from 'vuex';
import AppSearch from "@/views/modules/share/AppSearch";
import RxSearchApp from "@/views/modules/share/rx-search-app";
import instAndTaskShare from "@/views/modules/bpm/core/js/instAndTaskShare";

export default {
  name: 'my-transout-task',
  mixins: [AppBaseList,instAndTaskShare,FlowUtil,AppSearch],
  components: {
    RxLayout,
    RxFit,
    RxGrid,
    RxCategoryTreeeditor,
    RxSearchApp
  },
    computed: {
        ...mapState({
            // 所属应用
            allApps: state => state.appSetting ? state.appSetting.allApps : {}
        }),
    },
  data() {
    return {
      treeData: [],
      selTreeId: '',
      gridData: [],
      // 表头
      columns: [
        {
          title: this.$ti18('rxList.index','序号'),
          type: 'indexColumn',
          dataIndex: 'serial',
          scopedSlots: { customRender: 'serial' },
          width: 60,
        },

        {
          title: this.i18n('form.itemTitle','事项标题'),
          dataIndex: 'subject',
          width: 180,
          ellipsis: false,
        },
          {
              title: this.i18n('form.billNo','业务单号'),
              dataIndex: 'billNo',
              scopedSlots: { customRender: 'billNo' },
              width: 180,
              ellipsis: false,
          },
        {
          title: this.i18n('form.type','类型'),
          dataIndex: 'type',
          width: 80,
          scopedSlots: { customRender: 'type' },
        },
        {
          title: this.i18n('form.sendTime','发送时间'),
          dataIndex: 'createTime',
          width: 120,
        },
          {
          title: this.i18n('form.appId','所属应用'),
          dataIndex: 'appId',
          width: 140,
              sortField: 'APP_ID_',
              scopedSlots: {customRender: 'appId'}
          },
        {
          title: this.$ti18('rxList.action','操作'),
          dataIndex: 'action',
          width: 100,
          scopedSlots: { customRender: 'action' },
        },
      ],
      typeMap: {
        transfer: { color: 'green', text: this.i18n('typeMap.transfer','转办') },
        agent: { color: 'red', text: this.i18n('typeMap.agent','代理') },
      },
      statisticConfig: {
            type:"static_bpm",
            table:"BPM_TASK_TRANSFER",
            field:"TREE_ID_",
            whereConf:[{name:"OWNER_ID_",type:"string",dateFormat:"",op:"=",value:"curUserId",valueType:"context"}]
      },
        isMyBpmClient:true,
        readKey:"task.read",
        readType:"transOutTask",
        isInit:true
    }
  },
  methods: {
    i18n(name,text,key){
        return this.$ti18(name,text,"MyTransOutTask",key);
    },
    searchRangeDateChange(date,dateString,e,format){
      if(date.length==2){
          this.queryParam[e.queryField]=date[0].format('YYYY-MM-DD');
      }else {
          this.queryParam[e.queryField]=date.format(format);
      }
    },
    handSelect(curRow) {
        this.loadDataBySelectTreeNode(curRow);
    },
    instDetail(record) {
        this.openDetail(record.appId,record.instId);
    },
    retrieveTask(record) {
      let self_ = this
      Util.open(
        {
          component: BpmRetrieveTask,
          widthHeight: ['800px', '400px'],
          curVm: this,
          title: record.subject + this.i18n('fetchPage.title','取回任务'),
          data: {
            taskId: record.taskId,
            subject: record.subject,
          },
        },
        function (action) {
          //这里没回调
          if (action == 'ok') {
            self_.refreshGrid()
          }
        }
      )
    },
    search() {
      this.$refs.table.loadData()
    },
    closeSearchbar(){
      //关闭过滤弹窗；（点击X触发）
      this.fitSearch = false ;
    },
  },
}
</script>
<style scoped>

</style>

